package com.example.demo.mapper;

import com.example.demo.entity.OnlineProject;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 网签项目配置类
 *
 * @author 叮当猫的百宝箱
 * @since 1.0
 */
public interface OnlineProjectMapper {

    /**
     * 新增网签项目
     *
     * @param onlineProject 待添加的网签项目信息
     * @return 受影响的行数
     */
    int insert(OnlineProject onlineProject);


    /**
     * 根据网签项目配置的ID删除网签项目
     *
     * @param id 网签项目配置ID
     * @return 受影响的行数
     */
    int deleteById(Long id);


    /**
     * 根据网签配置ID删除网签配置的所有项目
     *
     * @param onlineId 网签配置ID
     * @return 受影响的行数
     */
    int deleteByOnlineId(Long onlineId);


    /**
     * 根据网签项目配置ID更新，网签项目信息
     *
     * @param id            网签项目配置ID
     * @param onlineProject 待更新的网签项目信息
     * @return 受影响的行数
     */
    int updateById(@Param("id") Long id, @Param("onlineProject") OnlineProject onlineProject);

    /**
     * 根据网签项目配置ID更新，网签项目信息
     *
     * @param id            网签项目配置ID
     * @param onlineProject 待更新的网签项目信息(为null的属性将被忽略)
     * @return 受影响的行数
     */
    int updateSelectiveById(@Param("id") Long id, @Param("onlineProject") OnlineProject onlineProject);

    /**
     * 根据网签项目配置ID查询网签项目配置信息
     *
     * @param id 网签项目配置ID
     * @return 网签项目配置
     */
    OnlineProject findById(Long id);

    /**
     * 根据网签配置ID，查询所属于网签配置的所有网签项目配置列表
     *
     * @param onlineId 网签配置ID
     * @return 所属网签配置的所有网签项目列表
     */
    List<OnlineProject> findByOnlineId(Long onlineId);
}
